home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / fuse / fuse_common.h < prev    next >
C/C++ Source or Header  |  2006-05-11  |  4KB  |  157 lines

  1. /*
  2.     FUSE: Filesystem in Userspace
  3.     Copyright (C) 2001-2006  Miklos Szeredi <miklos@szeredi.hu>
  4.  
  5.     This program can be distributed under the terms of the GNU LGPL.
  6.     See the file COPYING.LIB.
  7. */
  8.  
  9. #if !defined(_FUSE_H_) && !defined(_FUSE_LOWLEVEL_H_)
  10. #error "Never include <fuse_common.h> directly; use <fuse.h> or <fuse_lowlevel.h instead."
  11. #endif
  12.  
  13. #ifndef _FUSE_COMMON_H_
  14. #define _FUSE_COMMON_H_
  15.  
  16. #include "fuse_opt.h"
  17. #include <stdint.h>
  18.  
  19. /** Major version of FUSE library interface */
  20. #define FUSE_MAJOR_VERSION 2
  21.  
  22. /** Minor version of FUSE library interface */
  23. #define FUSE_MINOR_VERSION 6
  24.  
  25. #define FUSE_MAKE_VERSION(maj, min)  ((maj) * 10 + (min))
  26. #define FUSE_VERSION FUSE_MAKE_VERSION(FUSE_MAJOR_VERSION, FUSE_MINOR_VERSION)
  27.  
  28. /* This interface uses 64 bit off_t */
  29. #if _FILE_OFFSET_BITS != 64
  30. #error Please add -D_FILE_OFFSET_BITS=64 to your compile flags!
  31. #endif
  32.  
  33. #ifdef __cplusplus
  34. extern "C" {
  35. #endif
  36.  
  37. /**
  38.  * Information about open files
  39.  *
  40.  * Changed in version 2.5
  41.  */
  42. struct fuse_file_info {
  43.     /** Open flags.  Available in open() and release() */
  44.     int flags;
  45.  
  46.     /** Old file handle, don't use */
  47.     unsigned long fh_old;
  48.  
  49.     /** In case of a write operation indicates if this was caused by a
  50.         writepage */
  51.     int writepage;
  52.  
  53.     /** Can be filled in by open, to use direct I/O on this file.
  54.         Introduced in version 2.4 */
  55.     unsigned int direct_io : 1;
  56.  
  57.     /** Can be filled in by open, to indicate, that cached file data
  58.         need not be invalidated.  Introduced in version 2.4 */
  59.     unsigned int keep_cache : 1;
  60.  
  61.     /** Padding.  Do not use*/
  62.     unsigned int padding : 30;
  63.  
  64.     /** File handle.  May be filled in by filesystem in open().
  65.         Available in all other file operations */
  66.     uint64_t fh;
  67. };
  68.  
  69. struct fuse_conn_info {
  70.     unsigned proto_major;
  71.     unsigned proto_minor;
  72.     unsigned async_read;
  73.     unsigned max_write;
  74.     unsigned max_readahead;
  75.     unsigned reserved[27];
  76. };
  77.  
  78. /**
  79.  * Create a FUSE mountpoint
  80.  *
  81.  * Returns a control file descriptor suitable for passing to
  82.  * fuse_new()
  83.  *
  84.  * @param mountpoint the mount point path
  85.  * @param args argument vector
  86.  * @return the control file descriptor on success, -1 on failure
  87.  */
  88. int fuse_mount(const char *mountpoint, struct fuse_args *args);
  89.  
  90. /**
  91.  * Umount a FUSE mountpoint
  92.  *
  93.  * @param mountpoint the mount point path
  94.  * @param the control file descriptor 
  95.  */
  96. void fuse_unmount(const char *mountpoint, int fd);
  97.  
  98. /**
  99.  * Parse common options
  100.  *
  101.  * The following options are parsed:
  102.  *
  103.  *   '-f'            foreground
  104.  *   '-d' '-odebug'  foreground, but keep the debug option
  105.  *   '-s'            single threaded
  106.  *   '-h' '--help'   help
  107.  *   '-ho'           help without header
  108.  *   '-ofsname=..'   file system name, if not present, then set to the program
  109.  *                   name
  110.  *
  111.  * All parameters may be NULL
  112.  *
  113.  * @param args argument vector
  114.  * @param mountpoint the returned mountpoint, should be freed after use
  115.  * @param multithreaded set to 1 unless the '-s' option is present
  116.  * @param foreground set to 1 if one of the relevant options is present
  117.  * @return 0 on success, -1 on failure
  118.  */
  119. int fuse_parse_cmdline(struct fuse_args *args, char **mountpoint,
  120.                        int *multithreaded, int *foreground);
  121.  
  122.  
  123. #if FUSE_USE_VERSION < 26
  124. #    ifdef __FreeBSD__
  125. #        if FUSE_USE_VERSION < 25
  126. #            error On FreeBSD API version 25 or greater must be used
  127. #        endif
  128. #    endif
  129. #    include "fuse_common_compat.h"
  130. #    undef FUSE_MINOR_VERSION
  131. #    undef fuse_main
  132. #    define fuse_unmount fuse_unmount_compat22
  133. #    if FUSE_USE_VERSION == 25
  134. #        define FUSE_MINOR_VERSION 5
  135. #    elif FUSE_USE_VERSION == 24 || FUSE_USE_VERSION == 22
  136. #        define FUSE_MINOR_VERSION 4
  137. #        define fuse_mount fuse_mount_compat22
  138. #    elif FUSE_USE_VERSION == 21
  139. #        define FUSE_MINOR_VERSION 1
  140. #        define fuse_mount fuse_mount_compat22
  141. #    elif FUSE_USE_VERSION == 11
  142. #        warning Compatibility with API version 11 is deprecated
  143. #        undef FUSE_MAJOR_VERSION
  144. #        define FUSE_MAJOR_VERSION 1
  145. #        define FUSE_MINOR_VERSION 1
  146. #        define fuse_mount fuse_mount_compat1
  147. #    else
  148. #        error Compatibility with API version other than 21, 22, 24, 25 and 11 not supported
  149. #    endif
  150. #endif
  151.  
  152. #ifdef __cplusplus
  153. }
  154. #endif
  155.  
  156. #endif /* _FUSE_COMMON_H_ */
  157.